﻿' ----------------------------------------------------------------------------------
' Microsoft Developer & Platform Evangelism
' 
' Copyright (c) Microsoft Corporation. All rights reserved.
' 
' THIS CODE AND INFORMATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, 
' EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES 
' OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
' ----------------------------------------------------------------------------------
' The example companies, organizations, products, domain names,
' e-mail addresses, logos, people, places, and events depicted
' herein are fictitious.  No association with any real company,
' organization, product, domain name, email address, logo, person,
' places, or events is intended or should be inferred.
' ----------------------------------------------------------------------------------

Imports SL.Phone.Federation.Utilities
Imports System

Namespace Helpers

    Public Module Extensions
        Private Const ExpirationBuffer As Long = 10

        <System.Runtime.CompilerServices.Extension()> _
        Public Function IsValid(ByVal rstrStore As RequestSecurityTokenResponseStore) As Boolean
            Dim epoch = (Date.UtcNow.Ticks - 621355968000000000) / 10000000
            If (rstrStore IsNot Nothing) AndAlso rstrStore.ContainsValidRequestSecurityTokenResponse() Then
                Return rstrStore.RequestSecurityTokenResponse.expires > epoch + ExpirationBuffer
            End If

            Return False
        End Function
    End Module
End Namespace